package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	//第十一章：go语言的文件的操作
	//定义源文件和目标文件
	file1Path := "C:/Users/Administrator/Desktop/111.txt"
	file2Path := "C:/Users/Administrator/Desktop/222.txt"
	//打开源文件
	file1, err := os.Open(file1Path)
	if err != nil {
		fmt.Println("打开文件失败", err)
		return
	}
	//当函数退出时，关闭文件，防止缓存泄露
	defer file1.Close()
	//打开目标文件
	file2, err := os.OpenFile(file2Path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
	if err != nil {
		fmt.Println("打开文件失败", err)
		return
	}
	//当函数退出时，关闭文件，防止缓存泄露
	defer file2.Close()
	//创建一个流
	reader := bufio.NewReader(file1)
	writer := bufio.NewWriter(file2)
	for {
		str, err := reader.ReadString('\n') //读到一个换行就结束
		if err == nil {
			writer.WriteString(str)
		} else if err == io.EOF { //io.EOF表示文件的末尾
			break
		}
	}
	writer.Flush() //将缓存中的内容写入文件
	fmt.Println("文件拷贝结束")
}
